home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2posx10.zoo / m2posix.10 / src / sys.dpp < prev    next >
Encoding:
Modula Definition  |  1993-06-11  |  6.6 KB  |  137 lines

  1. DEFINITION MODULE sys;
  2. __DEF_SWITCHES__
  3. #ifdef HM2
  4. #ifdef __LONG_WHOLE__
  5. (*$!i+: Modul muss mit $i- uebersetzt werden! *)
  6. (*$!w+: Modul muss mit $w- uebersetzt werden! *)
  7. #else
  8. (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
  9. (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
  10. #endif
  11. #endif
  12. (*****************************************************************************)
  13. (* Systeminformationen und -einstellungen.                                   *)
  14. (*                                                                           *)
  15. (* Ein Fehler ist immer dann aufgetreten, wenn bei Funktionen mit Typ INTEGER*)
  16. (* ein negativer Wert zurueckgegeben wird.                                   *)
  17. (* Die genaue Fehlerursache kann bei Bedarf ueber "err.errno" und die ent-   *)
  18. (* sprechenden Konstanten ermittelt werden. Die Funktionen veraendern "errno"*)
  19. (* nur dann, wenn ein Fehler aufgetreten ist, bei erfolgreicher Ausfuehrung  *)
  20. (* wird "errno" nicht veraendert.                                            *)
  21. (*                                                                           *)
  22. (* "GEMDOS":                                                                 *)
  23. (* Die Eigenschaften der Funktionen unter dem ``blanken'' "GEMDOS" sind z.T. *)
  24. (* stark eingeschraenkt; unter dem Stichwort "GEMDOS" ist deswegen immer     *)
  25. (* angegeben, in wieweit die Funktion emuliert werden kann. Ist MiNT-Unter-  *)
  26. (* stuetzung angegeben, so ist unter der Betriebssystemerweiterung "MiNT"    *)
  27. (* eine bessere Unterstuetzung der Funktionen zu erwarten.                   *)
  28. (* --------------------------------------------------------------------------*)
  29. (* 20-Nov-93, Holger Kleinschmidt                                            *)
  30. (*****************************************************************************)
  31.  
  32. FROM PORTAB IMPORT
  33. (* TYPE *) SIGNEDLONG;
  34.  
  35. FROM types IMPORT
  36. (* TYPE *) timeT, ssizeT;
  37.  
  38. (*=========================== "uname()" =====================================*)
  39.  
  40. TYPE
  41.   UtsnameRec = RECORD
  42.     (* Laenge und Inhalt der einzelnen Strings sind systemspezifisch *)
  43.     sysname  : ARRAY [0..9] OF CHAR;
  44.     nodename : ARRAY [0..9] OF CHAR;
  45.     release  : ARRAY [0..9] OF CHAR;
  46.     version  : ARRAY [0..9] OF CHAR;
  47.     machine  : ARRAY [0..9] OF CHAR;
  48.   END;
  49.  
  50. (*==================== "pathconf()", "sysconf()" ============================*)
  51.  
  52. CONST (* nicht POSIX: *)
  53. #if no_MIN_MAX
  54.   UNLIMITED = 7FFFFFFFH; (* <=> Wert nur durch Speicher o.ae. begrenzt *)
  55. #else
  56.   UNLIMITED = MAX(SIGNEDLONG); (* <=> Wert nur durch Speicher o.ae. begrenzt *)
  57. #endif
  58.  
  59. TYPE
  60.   PConfVal = (
  61.     pcLinkMax,   (* Max. Anzahl Links *)
  62.     pcPathMax,   (* Max. Laenge einer kompletten Pfadangabe *)
  63.     pcNameMax,   (* Max. Laenge eines Dateinamens ohne Pfad *)
  64.     pcPipeBuf,   (* Anzahl Bytes, die ``atomar'' in Pipe geschrieben werden *)
  65.     pcNoTrunc,   (* Werden Pfadangaben automatisch gekuerzt ? *)
  66.     pcMaxCanon,
  67.     pcMaxInput,
  68.     pcChownRestricted,(* Kann Benutzer seine Dateien fuer andere freigeben ? *)
  69.     pcVdisable
  70.   );
  71.  
  72. TYPE
  73.   SConfVal = (
  74.     scArgMax,    (* max. Laenge fuer Argumente und Environment bei "exec*()" *)
  75.     scOpenMax,   (* max. Anzahl gleichzeitig offener Dateien *)
  76.     scNGroupsMax,
  77.     scChildMax,  (* max. Anzahl gleichzeitig ex. Prozesse pro Benutzer *)
  78.     scClkTck,    (* = CLKTCK, Anzahl Intervalle/Sek bei Typ 'clockT' *)
  79.     scJobControl,(* wird ``Job Control'' unterstuetzt ? *)
  80.     scSavedIds,
  81.     scVersion    (* POSIX-Version, 6 dez. Digits, z.B. 198808 oder 199009 *)
  82.   );
  83.  
  84. (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  85.  
  86.  PROCEDURE uname ((* --/AUS *) VAR name : UtsnameRec ): INTEGER;
  87.  
  88. (*--------------------------------------------------------------------------
  89.  | Liefert systemspezifische Informationen ueber das System in Form von     |
  90.  | Strings.                                                                 |
  91.  |                                                                          |
  92.  | GEMDOS/MiNT:                                                             |
  93.  |  'sysname': "TOS" oder "MiNT"                                            |
  94.  | 'nodename': ""                                                           |
  95.  |  'release': MiNT-Version                                                 |
  96.  |  'version': TOS-Version                                                  |
  97.  |  'machine': "atarist", "atariste", "ataritt" oder "atari"                |
  98.   --------------------------------------------------------------------------*)
  99.  
  100.  
  101.  PROCEDURE pathconf ((* EIN/ -- *) REF path  : ARRAY OF CHAR;
  102.                      (* EIN/ -- *)     which : PConfVal      ): SIGNEDLONG;
  103.  
  104. (*--------------------------------------------------------------------------
  105.  | Ermittelt Maximalwerte (siehe Def. 'PConfVal') fuer das Dateisystem, auf |
  106.  | dem sich <path> befindet.                                                |
  107.  | Wenn ein Wert unbegrenzt ist, wird UNLIMITED zurueckgegeben.             |
  108.  |                                                                          |
  109.  | GEMDOS: Die Werte sind feste Konstanten.                                 |
  110.  |   MiNT: 'pcLinkMax', 'pcPathMax', 'pcNameMax', 'pcPipeBuf', 'pcNoTrunc'  |
  111.  |         werden ueber 'Dpathconf' ermittelt, der Rest sind Konstanten.    |
  112.   --------------------------------------------------------------------------*)
  113.  
  114.  PROCEDURE sysconf ((* EIN/ -- *) which : SConfVal ): SIGNEDLONG;
  115.  
  116. (*--------------------------------------------------------------------------
  117.  | Ermittelt Maximalwerte (siehe Def. 'SConfVal') fuer das System.          |
  118.  | Wenn ein Wert unbegrenzt ist, wird UNLIMITED zurueckgegeben.             |
  119.  |                                                                          |
  120.  | GEMDOS: Die Werte sind feste Konstanten.                                 |
  121.  |   MiNT: 'scOpenMax', 'scChildMax' und 'scNGroupsMax' werden ueber        |
  122.  |         'Sysconf' ermittelt, der Rest sind Konstanten.                   |
  123.   --------------------------------------------------------------------------*)
  124.  
  125.  
  126.  PROCEDURE time ((* -- /AUS *) VAR time : timeT );
  127.  
  128. (*--------------------------------------------------------------------------
  129.  | Liefert in <time> das aktuelle Datum/die aktuelle Zeit in Sekunden seit  |
  130.  | dem 1.Jan.1970.                                                          |
  131.  |                                                                          |
  132.  | GEMDOS: Zeit und Datum sind im DOS-Format, siehe 'types.timeT'           |
  133.  |   MiNT: -""-                                                             |
  134.   --------------------------------------------------------------------------*)
  135.  
  136. END sys.
  137.